
// 云函数调用工具类

// 用户认证相关
const userAuth = {
  // 用户登录
  async login(userInfo) {
    try {
      const result = await wx.cloud.callFunction({
        name: 'userAuth',
        data: {
          type: 'login',
          userInfo
        }
      })
      return result.result
    } catch (err) {
      console.error('[用户登录]失败：', err)
      throw err
    }
  },

  // 检查登录状态
  async checkAuth() {
    try {
      const result = await wx.cloud.callFunction({
        name: 'userAuth',
        data: {
          type: 'checkAuth'
        }
      })
      return result.result
    } catch (err) {
      console.error('[检查登录状态]失败：', err)
      throw err
    }
  }
}

// 待办事项管理
const todoManager = {
  // 创建待办事项
  async createTodo(todoData) {
    try {
      const result = await wx.cloud.callFunction({
        name: 'todoManager',
        data: {
          type: 'create',
          data: todoData
        }
      })
      return result.result
    } catch (err) {
      console.error('[创建待办事项]失败：', err)
      throw err
    }
  },

  // 更新待办事项
  async updateTodo(todoData) {
    try {
      const result = await wx.cloud.callFunction({
        name: 'todoManager',
        data: {
          type: 'update',
          data: todoData
        }
      })
      return result.result
    } catch (err) {
      console.error('[更新待办事项]失败：', err)
      throw err
    }
  },

  // 删除待办事项
  async deleteTodo(todoId) {
    try {
      const result = await wx.cloud.callFunction({
        name: 'todoManager',
        data: {
          type: 'delete',
          data: { _id: todoId }
        }
      })
      return result.result
    } catch (err) {
      console.error('[删除待办事项]失败：', err)
      throw err
    }
  },

  // 获取待办事项列表
  async listTodos(params = {}) {
    try {
      const result = await wx.cloud.callFunction({
        name: 'todoManager',
        data: {
          type: 'list',
          data: params
        }
      })
      return result.result
    } catch (err) {
      console.error('[获取待办事项列表]失败：', err)
      throw err
    }
  },

  // 切换待办事项状态
  async toggleTodoStatus(todoId) {
    try {
      const result = await wx.cloud.callFunction({
        name: 'todoManager',
        data: {
          type: 'toggleStatus',
          data: { _id: todoId }
        }
      })
      return result.result
    } catch (err) {
      console.error('[切换待办事项状态]失败：', err)
      throw err
    }
  }
}

// 标签管理
const tagManager = {
  // 创建标签
  async createTag(tagData) {
    try {
      const result = await wx.cloud.callFunction({
        name: 'tagManager',
        data: {
          type: 'create',
          data: tagData
        }
      })
      return result.result
    } catch (err) {
      console.error('[创建标签]失败：', err)
      throw err
    }
  },

  // 更新标签
  async updateTag(tagData) {
    try {
      const result = await wx.cloud.callFunction({
        name: 'tagManager',
        data: {
          type: 'update',
          data: tagData
        }
      })
      return result.result
    } catch (err) {
      console.error('[更新标签]失败：', err)
      throw err
    }
  },

  // 删除标签
  async deleteTag(tagId) {
    try {
      const result = await wx.cloud.callFunction({
        name: 'tagManager',
        data: {
          type: 'delete',
          data: { _id: tagId }
        }
      })
      return result.result
    } catch (err) {
      console.error('[删除标签]失败：', err)
      throw err
    }
  },

  // 获取标签列表
  async listTags() {
    try {
      const result = await wx.cloud.callFunction({
        name: 'tagManager',
        data: {
          type: 'list'
        }
      })
      return result.result
    } catch (err) {
      console.error('[获取标签列表]失败：', err)
      throw err
    }
  },

  // 初始化默认标签
  async initDefaultTags() {
    try {
      const result = await wx.cloud.callFunction({
        name: 'tagManager',
        data: {
          type: 'initDefaultTags'
        }
      })
      return result.result
    } catch (err) {
      console.error('[初始化默认标签]失败：', err)
      throw err
    }
  }
}

// 提醒订阅管理
const reminderManager = {
  // 订阅消息模板ID
  REMINDER_TEMPLATE_ID: '695PQ8se07fitLzQBZmv6oI0MFhpG501-HNahY1vcUU', // 待办提醒模板ID

  // 请求订阅消息权限
  async requestSubscribe() {
    try {
      const result = await wx.requestSubscribeMessage({
        tmplIds: [this.REMINDER_TEMPLATE_ID]
      })
      return result[this.REMINDER_TEMPLATE_ID] === 'accept'
    } catch (err) {
      console.error('[请求订阅消息权限]失败：', err)
      throw err
    }
  }
}

module.exports = {
  userAuth,
  todoManager,
  tagManager,
  reminderManager
}